package pl.edu.pk.psb.bc.bo;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;

import pl.edu.pk.psb.bc.assembler.PolaczenieAssembler;
import pl.edu.pk.psb.bc.assembler.RodzajPolaczeniaAssembler;
import pl.edu.pk.psb.bc.dao.CzasPrzejazduDao;
import pl.edu.pk.psb.bc.dao.PolaczenieDao;
import pl.edu.pk.psb.bc.dao.RodzajPolaczeniaDao;
import pl.edu.pk.psb.bc.ds.PolaczenieDs;
import pl.edu.pk.psb.bc.dto.PolaczenieDto;
import pl.edu.pk.psb.bc.dto.RodzajPolaczeniaDto;

@Component
public class PolaczenieBoImpl implements PolaczenieBo{
	
	@Autowired
	PolaczenieAssembler polaczenieAssembler;

	@Autowired
	PolaczenieDao polaczenieDao;
	
	@Autowired
	CzasPrzejazduBo czasPrzejazduBo;
	
	@Override
	@Transactional
	public void zapisz(PolaczenieDto dto) {
		PolaczenieDs ds = polaczenieAssembler.konwertuj(dto);
		polaczenieDao.zapisz(ds);
		czasPrzejazduBo.zapiszCzasy(dto, ds);
	}

	@Override
	@Transactional
	public List<PolaczenieDto> pobierzPolaczenia() {
		return polaczenieAssembler.konwertujDoDto(polaczenieDao.pobierzWszystkie());
	}

	@Override
	@Transactional
	public PolaczenieDto pobierzPolaczenie(Integer id) {
		return polaczenieAssembler.konwertuj(polaczenieDao.pobierz(id));
	}

	@Override
	@Transactional
	public void zmien(PolaczenieDto dto) {
		PolaczenieDs ds = polaczenieAssembler.konwertuj(dto);
		ds.setId(dto.getId());
		polaczenieDao.zapisz(ds);
		czasPrzejazduBo.zmien(dto, ds);
	}

	@Override
	public void usun(int idPolaczenia) {
		czasPrzejazduBo.usunCzasy(idPolaczenia);
		polaczenieDao.usun(idPolaczenia);
	}

}
